GoloScript v0.0.0 is out!
We are excited to announce the release of GoloScript v0.0.0, the latest version of our dynamic scripting language designed for simplicity and performance. This release brings a host of new features, improvements, and bug fixes that enhance the overall developer experience.
Of course, we have a π³ Docker image available for this release:
- Create a file named
hello.golowith the following content:
module hello.World
function main = |args| {
println("π Hello World! π")
}
- Run the GoloScript Docker image with the following command:
docker run --rm -v $(pwd):/app -w /app k33g/gololang:v0.0.0 /golo ./hello.golo
GoloScript Playground
If you want to try GoloScript without installing anything, you can use the GoloScript Playgroung available at: https://codeberg.org/TypeUnsafe/golo-playground. Itβs a Docker Compode project that allows you to write, run GoloScript code snippets in a container, with some samples included.
We have a VSCode grammar!
The grammar is not yet published, but you can find it in the GoloScript repository: https://codeberg.org/TypeUnsafe/golo-script/src/branch/main/vscode.
GoloScript is hosted on ποΈ Codeberg
GoloScript is now hosted on Codeberg, a community-driven platform for hosting and collaborating on open-source projects. You can find the GoloScript repository at: https://codeberg.org/TypeUnsafe/golo-script
We encourage developers to explore the new features of GoloScript v0.0.0 and contribute to its growth. Your feedback and contributions are invaluable to us as we continue to improve the language.
Release Highlights
https://codeberg.org/TypeUnsafe/golo-script/releases/tag/v0.0.0
- Enhanced Performance: Significant optimizations have been made to improve the execution speed of GoloScript programs.
- New Standard Library Functions: Added several new functions to the standard library to simplify common tasks.
- Improved Error Handling: Enhanced error messages and debugging capabilities to help developers identify and fix issues more efficiently.
- Updated Documentation: Comprehensive updates to the documentation to reflect the new features and changes in this release.
The newest βfeatureβ is the Observable type!
An observable value notifies observers of updates in a thread-safe manner. An observable can also be constructed from another observable using the map and filter combinators
module tests.Observable
import gololang.Testing
# Global variables to track observer notifications
var notificationCount = 0
var lastValue = null
function testObservableOnChange = {
resetTestState()
let obs = observable(5)
# Register an observer
observableOnChange(obs, |value| {
notificationCount = notificationCount + 1
lastValue = value
})
# Update the value
observableSet(obs, 10)
assertEqual(1, notificationCount, "Observer should be notified once")
assertEqual(10, lastValue, "Observer should receive new value")
}
function testMultipleObservers = {
resetTestState()
let obs = observable(1)
var count1 = 0
var count2 = 0
observableOnChange(obs, |value| {
count1 = count1 + 1
})
observableOnChange(obs, |value| {
count2 = count2 + 1
})
observableSet(obs, 2)
assertEqual(1, count1, "First observer should be notified")
assertEqual(1, count2, "Second observer should be notified")
}
function testObservableMap = {
let source = observable(5)
let mapped = observableMap(source, |value| {
return value * 2
})
# The mapped observable should have null initially
# until the source updates
# Update source
observableSet(source, 3)
# Check mapped value
assertEqual(6, observableGet(mapped), "Mapped observable should have value 6 (3 * 2)")
}
function testObservableFilter = {
resetTestState()
let source = observable(1)
let filtered = observableFilter(source, |value| {
return value % 2 == 0 # Only even numbers
})
observableOnChange(filtered, |value| {
notificationCount = notificationCount + 1
lastValue = value
})
# Set to odd number - should not propagate
observableSet(source, 3)
assertEqual(0, notificationCount, "Odd number should not propagate")
# Set to even number - should propagate
observableSet(source, 4)
assertEqual(1, notificationCount, "Even number should propagate")
assertEqual(4, lastValue, "Filtered value should be 4")
}
So, what are you waiting for? Try GoloScript v0.0.0 today and experience the power of dynamic scripting like never before!
π€ - The GoloScript Team
Β© 2026 GoloScript Project | Built with Gu10berg
Subscribe: π‘ RSS | βοΈ Atom